//---------------------------------------------------------------------------

#ifndef LiaisonReseauGraphiqueH
#define LiaisonReseauGraphiqueH
//---------------------------------------------------------------------------

class NoeudReseauGraphique;

class LiaisonReseauGraphique {
public:
  LiaisonReseauGraphique(NoeudReseauGraphique * src, NoeudReseauGraphique * dst);
  void __fastcall DessinerSur(TCanvas * canvas);
  virtual __fastcall ~LiaisonReseauGraphique();
  void __fastcall DetruireNoeudAssoc(void);
  bool __fastcall IsEquivTo(NoeudReseauGraphique * nSrc, NoeudReseauGraphique * nDst);
  bool __fastcall IsVisible(void);
  void __fastcall PropagerVisibiliteDepuis(NoeudReseauGraphique * nSrc, bool respecterLeSensDesLiaisons, bool voirConceptsRelationels, int puissanceMin, bool voirReciproques);
  void __fastcall RecupererNoeudsProches(NoeudReseauGraphique * nSrc, int distanceMax, bool respecterLeSensDesLiaisons,  TList * listeNoeuds);
  static void __fastcall ExtremiteDeFleche(TCanvas * canvas, TPoint p, TPoint q, int arrowMagnitude = 9);
  static TPoint __fastcall CalcBezierProf (TPoint pa, TPoint pb, TPoint pc, TPoint pd, int profondeur);
  void __fastcall InverserSiConcernePar(NoeudReseauGraphique * n);
  void __fastcall Inverser(void);
  bool __fastcall EstLieA(NoeudReseauGraphique * n);
  NoeudReseauGraphique * __fastcall GetNoeudOppose(NoeudReseauGraphique * n);

  __property NoeudReseauGraphique * NSrc  = { read=FNSrc, write=SetNSrc };
  __property NoeudReseauGraphique * NDst  = { read=FNDst, write=SetNDst };
  __property NoeudReseauGraphique * NLia  = { read=FNLia };
  __property bool Virtuelle  = { read=GetVirtuelle };
  __property bool Orientee  = { read=GetOrientee };
private:
  NoeudReseauGraphique * FNSrc;
  NoeudReseauGraphique * FNDst;
  NoeudReseauGraphique * FNLia;
  void __fastcall SetNSrc(NoeudReseauGraphique * value);
  void __fastcall SetNDst(NoeudReseauGraphique * value);
  void __fastcall SetNAss(NoeudReseauGraphique * value);
  bool __fastcall GetVirtuelle();
  bool __fastcall GetOrientee();
};

#endif
